package Unidad4;

public class Estudiante implements Comparable<Estudiante> {
	
	/*
	 * cuando se busca comparar a dos estudiantes para ordenarlos se pone
	 * Comparable<Estudiante >
	 */

	private String nombres;// cuando una variable sea private se
	private String apellidos;// tiene q crear las funciones get and set
	private String direccion;// no es necesario el constructor pero si quiero lo pongo
	private int codMatricula;

	public int compareTo(Estudiante o) {//
		String apellidos = o.getApellidos().toLowerCase();
		String apellidosLocal = this.getApellidos().toLowerCase();
		return apellidosLocal.compareTo(apellidos);
	}

	@Override
	/*Este metodo no es necesario solo el equals para comparar*/
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((apellidos == null) ? 0 : apellidos.hashCode());
		result = prime * result + codMatricula;
		result = prime * result
				+ ((direccion == null) ? 0 : direccion.hashCode());
		result = prime * result + ((nombres == null) ? 0 : nombres.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Estudiante other = (Estudiante) obj;
		if (apellidos == null) {
			if (other.apellidos != null)
				return false;
		} else if (!apellidos.equals(other.apellidos))
			return false;
		if (codMatricula != other.codMatricula)
			return false;
		if (direccion == null) {
			if (other.direccion != null)
				return false;
		} else if (!direccion.equals(other.direccion))
			return false;
		if (nombres == null) {
			if (other.nombres != null)
				return false;
		} else if (!nombres.equals(other.nombres))
			return false;
		return true;
	}

	public Estudiante(String nombres, String apellidos, String direccion,
			int codMatricula) {// constructor con todas las variables
		super();
		this.nombres = nombres;
		this.apellidos = apellidos;
		this.direccion = direccion;
		this.codMatricula = codMatricula;
	}

	public String getNombres() {
		return nombres;
	}

	public void setNombres(String nombres) {
		this.nombres = nombres;
	}

	public String getApellidos() {
		return apellidos;
	}

	public void setApellidos(String apellidos) {
		this.apellidos = apellidos;
	}

	public String getDireccion() {
		return direccion;
	}

	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

	public int getCodMatricula() {
		return codMatricula;
	}

	public void setCodMatricula(int codMatricula) {
		this.codMatricula = codMatricula;
	}

	// Crear su constructor y getters/setters por cada atributo

}